import aepApiRequest from '../utils/aepApiRequest';
import { getAppIDInfo } from '../config/template';

interface IGetWalletRecord {
  current: number;
  size: number;
  query?: any;
}

export interface ICreateChagrgeOrder {
  payType: string;
  rechargeMoney: number;
  remark: string;
  rechargeId?: string;
}

export interface IWalletOrder {
  balance: number; // 钱包所剩余额/机智币
  chargeModeAdditionalData: string; // 机智豆充值套餐附加信息
  chargeModeId: number; // 机智豆充值套餐ID
  consumeType: number;
  ctime: string; // 添加时间
  fee: number; // 操作金额/机智币
  orderNo: string; // 主键，钱包订单号 
  orderType: number; // 订单类型：1充值订单 2消费订单
  payMoney: number; // 用户支付金额 
  payTime: string; // 支付时间/消费时间
  payType: number; // 交易类型：2app微信支付 3支付宝支付 5钱包支付 
  sceneId: number; // 场景id 
  sceneName: string; // 场景名称
  status: number; // 订单状态：-1已取消，1：待支付，2：支付中，3：支付失败，4：支付成功，5退款成功 6退款失败 ,
  sysUserId: number; // 系统用户id 
  tradeVO: any; // 交易流水信息
  userId: number; // 用户id 
  username: string; // 用户名称 
  utime: string; // 更新时间 
  walletType: number; // 钱包类型：1货币 2机智币
}

export interface IWalletConsume {
  balance: number; // 钱包所剩余额/机智币
  consumer: string; // 消费对象:手机号 
  ctime: string; // 添加时间
  deviceName: string; // 设备名称
  fee: number; // 操作金额/机智币
  gizwitsProductKey: string; // 机智云产品key
  mac: string; // mac地址
  messageId: string; // 语音/短信消息id
  nickname: string;
  orderNo: string; // 订单号
  orderType: number; // 类型：1充值订单 2消费订单 3提现订单
  payMoney: number; //用户支付金额
  payType: number; // 交易类型：2app微信支付 3支付宝支付 5钱包支付 
  paymentNo: string; // 第三方订单号 
  paymentTime: string; // 第三方交易时间 
  productId: number; // 所属产品
  sceneId: number; // 场景id
  sceneName: string; // 场景名称 
  sno: string; // 设备序列号 
  status: number; // 交易状态：1新建 2交易成功 3交易失败
  sysUserId: number; // 系统用户id 
  tradeNo: string; // 主键，交易号
  tradeType: number; // 消费类型：1语音 2短信 
  userId: number; // 用户id
  username: string; // 付费对象：用户名称/手机号/邮箱
  utime: string; // 更新时间
  walletType: number; // 钱包类型：1货币 2机智币
}

export async function getBalance() {
  return aepApiRequest(
    'app/wallet',
    {
      method: 'GET',
    },
  );
}

export async function getPrice() {
  return aepApiRequest(
    'app/wallet/fee',
    {
      method: 'GET',
    },
  );
}

export async function cancelOrder(orderNo: string) {
  return aepApiRequest(
    `app/wallet/order/cancel/${orderNo}`,
    {
      method: 'POST',
    },
  );
}

export async function getWalletMode(availableChannel: number) {
  let appID = getAppIDInfo().appId;
  return aepApiRequest(
    `app/wallet/mode?appid=${appID}&availableChannel=${availableChannel}`,
    {
      method: 'GET',
    },
  );
}

export async function getChargeRecord(params: IGetWalletRecord) {
  return aepApiRequest(
    'app/wallet/order/page',
    {
      method: 'POST',
      body: params,
    },
  );
}

export async function getWalletRecord(params: IGetWalletRecord) {
  return aepApiRequest(
    'app/wallet/trade/page',
    {
      method: 'POST',
      body: params,
    },
  );
}

export async function createChargeOrder(params: ICreateChagrgeOrder) {
  return aepApiRequest(
    'app/wallet/order',
    {
      method: 'POST',
      body: params,
    },
  );
}

export async function chargePrePayWechat(orderNo: string) {
  return aepApiRequest(
    'app/wallet/pre_pay',
    {
      method: 'POST',
      body: orderNo,
    },
  );
}

export async function chargePrePayWechatMini({ payType, orderNo }: { orderNo: string, payType: string }) {
  return aepApiRequest(
    'app/wallet/order/pre_pay',
    {
      method: 'POST',
      body: { orderNo, payType },
    },
  );
}


export async function getOrderDetail(orderNo: string) {
  return aepApiRequest(
    `app/wallet/order/${orderNo}`,
    {
      method: 'GET',
    },
  );
}
